﻿using System;

namespace WpfApp1.Acme.ApplicationAttribute {
    /// <summary>
    /// ViewData特性是用来标记绑定前端视图数据类，
    /// 该特性标记的类无需实现INotifyPropertyChanged
    /// 接口的PropertyChanged事件，和ViewPage特性配合
    /// 即可实现视图的刷新其参数containerName为前端视图
    /// 容器名称，如：
    /// <Grid Name="containerName"></Grid>
    /// 其参数viewPath为前端视图的路径，默认为空字符串
    /// 即默认扫描MainWindow主窗口，同时在主窗口上标记
    /// ViewPage特性即可实现前端视图的刷新。需要指定视图
    /// 路径时需要指定视图对应的.cs文件的包全名，如下：
    /// [ViewData("containerName", "WpfApp1.MainWindow")]
    /// ViewData特性可以和Autowired特性配合使用可以获取到视图
    /// 数据类如：[Autowired("containerName")]
    /// </summary>
    [AttributeUsage(AttributeTargets.Class,
        AllowMultiple = false, Inherited = true)]
    internal class ViewData : Attribute {
        public ViewData(string containerName, string viewPath = "") {
            ContainerName = containerName;
            ViewPath = viewPath;
        }
        public string ContainerName { get; set; }    
        public string ViewPath { get; set; }
    }
}
